package com.xcm.service;

import com.xcm.model.TbDeviceInfo;
import com.xcm.model.TbDeviceUpgrade;
import com.xcm.model.bo.ClientDeviceBO;
import com.xcm.model.dto.NewestProgramDTO;

/**
 * 客户端与服务端交互逻辑Service
 */
public interface ClientService {
	/**
	 * 获取最新设置数据
	 *
	 * @param mac     mac地址
	 * @param version 版本号
	 * @return ClientDeviceBO
	 */
	ClientDeviceBO getStates(String mac, String version, TbDeviceInfo deviceInfo);

	/**
	 * 获取最新广告数据
	 *
	 * @param mac              mac地址
	 * @param version          xc版本号
	 * @param newestProgramDTO NewestProgramDTO对象
	 * @return String(提示信息)
	 */
	String getNewestProgram(String mac, String version, NewestProgramDTO newestProgramDTO);

	/**
	 * 获取终端升级
	 *
	 * @param model 对应机型
	 * @param mac   mac地址
	 * @return TbDeviceUpgrade
	 */
	TbDeviceUpgrade getDeviceUpgrade(String model, String mac);

	/**
	 * 上报广告数据的下载状态
	 *
	 * @param mac          mac地址
	 * @param playJson     当前播放Json
	 * @param downloadJson 当前下载
	 * @param state        下载状态
	 */
	void setDownload(String mac, String playJson, String downloadJson, Integer state);

	/**
	 * 上传日志
	 * @param mac   mac地址
	 * @param name  压缩包名
	 * @param url   文件地址
	 */
	void uploadLog(String mac, String name, String url);

	/**
	 * 设置机器码
	 *
	 * @param deviceMac 终端mac地址
	 * @param deviceNum 机器码
	 */
	void setDeviceNum(String deviceMac, String deviceNum);

	/**
	 * 设置音量
	 *
	 * @param deviceMac    终端Macs地址
	 * @param deviceVolume 音量
	 */
	void setVolume(String deviceMac, Integer deviceVolume);

	/**
	 * 设置定时开关机
	 *
	 * @param mac      mac地址
	 * @param useTimer 是否启用定时开关机
	 * @param bootTime 开机时间
	 * @param offTime  关机时间
	 */
	void setTimer(String mac, Integer useTimer, Long bootTime, Long offTime);

}
